import axios from 'axios'
// @ts-ignore
import NProgress from 'nprogress'
// 进度条包
import 'nprogress/nprogress.css'
import { getUserTempId } from '@/hooks/tokenAndUuid'
import {AxiosRequestHeaders,AxiosResponse} from 'axios'
const qiantaiRequest = axios.create({
  baseURL: '/qiantai', // 接口请求前缀
  timeout: 5000 // 请求超时时间
})

/* 定义response对象的data接口 */
interface ResponseData<T> {
  code: number;
  data: T;
  message: string;
}


// 添加请求拦截器
qiantaiRequest.interceptors.request.use(function(config) {
  // 在发送请求之前做些什么
  // 进度条开始
  NProgress.start()
  (config.headers as AxiosRequestHeaders).userTempId = getUserTempId()
  return config
}, function(error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 添加响应拦截器
qiantaiRequest.interceptors.response.use(function (response:AxiosResponse<ResponseData<any>>) {
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  // 关闭进度条
  NProgress.done()
  return response.data.data
}, function(error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  // console.log(error)
  alert(error.message)
  // return Promise.reject(error)
  // 对响应错误进行统一处理 Promise处于pending状态
  return new Promise(() => {
  })
})

export default qiantaiRequest
